Zamknięte. To pytanie wymaga szczegółów lub jasności. Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Dodaj szczegóły i wyjaśnij problem, edytując ten post. Zamknięte 1 rok temu. Popraw to pytanie Robię wyzwanie kodu i chcę uzyskać pierwsze 3 wartości z mojej tablicy, określając indeks początkowy i pobierając tylko pierwsze (3 lub mogą mieć dowolną długość) wartości z indeksu początkowego. Wypróbowałem ten kod i działa, ale struktura kodu jest zbyt długa, więc jak mogę skrócić ten kod, aby był łatwy do zrozumienia. int n = 10; double signature = new double [] {1, 1, 1}; double [] ret = new double [n]; podwójna suma = 0; ret [0] = podpis [0]; ret [1] = podpis [1]; ret [2] = podpis [2]; int x, i; for (i = 0; i
2021-01-31 08:21:04
Korzystając z LINQ, możesz spróbować czegoś takiego: var values = array.Skip (index) .Wzięty) .ToArray (); Gdzie indeks jest indeksem pierwszego elementu, a n liczbą elementów, które chcesz wybrać. Na przykład. https://dotnetfiddle.net/Pk1rwY Na marginesie. Korzystanie z LINQ nie oznacza, że kod byłby szybszy. Byłby bardziej zwarty / czytelny itp. Aby ocenić wydajność kodu, musisz użyć czegoś takiego jak BenchmarkDotNet. | Brak rozwiązania Linq: private static T [] Extract(T [] source, int fromIndex, int length) { if (null == źródło) zgłoś nowy ArgumentNullException (nameof (source)); else if (fromIndex <0) wrzuć nowy ArgumentOutOfRangeException (nameof (fromIndex), „From Index musi być nieujemna”); else if (długość <0) wrzuć nowy ArgumentOutOfRangeException (nameof (length), „Długość musi być nieujemna”); if (fromIndex> = source.Length || length == 0) zwraca nowe T [0]; T [] wynik = nowy T [Math.Min (length, source.Length - fromIndex)]; Array.Copy (source, fromIndex, result, 0, result.Length); wynik zwrotu; } Następnie double [] signature = new double [] {0, 1, 2, 3, 4, 5}; double [] ret = Extract (podpis, 3, 2); Console.Write (string.Join (",", ret)); Wynik: 3, 4 | Z twojego pytania, musisz skorzystać z operatorów .Take i .Skip. var result = array.Skip (startIndex) .Take (numberOfElements); Z twojego kodu wynika, że próbujesz zrobić coś innego, a mianowicie sumowanie elementów. W tym przypadku pomocny może być operator .Sum. | Nie szukasz odpowiedzi? Przeglądaj inne pytania oznaczone tagami C # tablice linq lub zadaj własne pytanie.